1
ソースの移植性を超えて
AI024Lesson 3
00:00

ROCm エコシステムにおいて、 ソースの移植性 性能の同等性と誤解されることがよくあります。一方で、 移植可能な HIP コード は、単一のコードベースが異なるハードウェアベンダー(AMD と NVIDIA)上で実行可能ですが、ピークスループットを達成するには、 ソースの移植性とバイナリのパフォーマンスは別問題であることを認識することが必要です

1. 移植性の逆説

HIP プログラムは ソースレベルで移植可能という意味であり、構文や論理は一定です。しかし、世代間で基礎となる命令セットアーキテクチャ(ISA)は大きく異なります(例:AMD GCN 対 RDNA)。これらの違いを無視した「素朴な」ビルドは、重大なパフォーマンス低下を引き起こす可能性があります。

2. アーキテクチャへの敏感さ

最大限のパフォーマンスを得るためには、 優れたバイナリは依然としてアーキテクチャに依存する必要がありますコンパイラは、ターゲット GPU のコンピューティングユニットに特化してレジスタ割り当て、ワーフロント/ワープスケジューリング、メモリアクセスパターンを最適化しなければなりません。ターゲットアーキテクチャを指定しないと、行列乗算加算(MFMA)などの専用ハードウェアを使用できなくなります。

統合された HIP ソースAMD 最適化版(amdgcn)NVIDIA 最適化版(nvptx)最適化のギャップ

機能的な互換性は、バイナリレベルでのパフォーマンスの同等性を意味するものではありません。

3. ビルドシステムの義務

"Hello World"を超える規模では、単一のソースツリーから複数の最適化されたバイナリパスを生成・管理する高度なビルドパイプライン(例:CMake)が必要です。これにより、正しい命令が正しいハードウェアに届くことが保証されます。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>